home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / mui / bcc_src.lha / Parser / test / MyWindow.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-09  |  2.6 KB  |  97 lines

  1. /* MyWindow class */
  2.  
  3. #include "MyWindow.h"
  4.  
  5. /* ---------------------------------------------- */
  6. /* BCC header. Inserted into every generated file */
  7. /* ---------------------------------------------- */
  8.  
  9. #ifndef _BCC_EVERY
  10. #define _BCC_EVERY
  11.  
  12. /* Includes necessary for every mui c code */
  13.  
  14. #include <proto/exec.h>
  15. #include <proto/muimaster.h>
  16. #include <libraries/mui.h>
  17.  
  18. #include <mui/muiextra.h>
  19.  
  20. #include <string.h>
  21.  
  22. /* defines that help adjusting to any compiler */
  23.  
  24. #ifdef _DCC
  25.     #define REG(x) __ ## x
  26.     #define ASM
  27.     #define SAVEDS __geta4
  28. #else
  29.     #define REG(x) register __ ## x
  30.  
  31.     #ifdef _STORM
  32.  
  33.             #define ASM
  34.             #define SAVEDS __saveds
  35.  
  36.     #else
  37.  
  38.         #if defined __MAXON__ || defined __GNUC__
  39.             #define ASM
  40.             #define SAVEDS
  41.         #else
  42.             #define ASM    __asm
  43.             #define SAVEDS __saveds
  44.         #endif
  45.     
  46.     #endif
  47.  
  48. #endif
  49.  
  50. #define CallSuper() DoSuperMethodA(cl, obj, msg)
  51. #define value (tag->ti_Data)
  52. #define GetData() INST_DATA(cl, obj)
  53.  
  54. #endif
  55. unsigned long mMyWindowWinMet( struct IClass *cl, Object *obj, Msg msg );
  56. void aMyWindowCustomAttrSet( struct IClass *cl, Object *obj, unsigned long val );
  57. void aMyWindowCustomAttrGet( struct IClass *cl, Object *obj, unsigned long *store );
  58.  
  59. static unsigned long mMyWindowOM_SET( struct IClass *cl, Object *obj, struct opSet *msg )
  60. {
  61.  MyWindowData *data = INST_DATA(cl, obj);
  62.  struct TagItem *tags, *tag;
  63.     for( tags = msg->ops_AttrList; tag = NextTagItem(&tags); ) {
  64.         switch( tag->ti_Tag ) {
  65.             case MUIA_MyWindow_MyVal: *((unsigned long*)&data->MyVal) = value; break;
  66.             case MUIA_MyWindow_CustomAttr: aMyWindowCustomAttr( cl, obj, tag->ti_Data, BCC_SET ); break;
  67.         }
  68.     }
  69.  return DoSuperMethodA( cl, obj, (Msg)msg );
  70. }
  71.  
  72. static unsigned long mMyWindowOM_GET( struct IClass *cl, Object *obj, struct opGet *msg )
  73. {
  74.  MyWindowData *data = INST_DATA(cl, obj);
  75.  ULONG tag = msg->opg_AttrID;
  76.     switch( tag ) {
  77.             case MUIA_MyWindow_MyVal: *msg->opg_Storage = (unsigned long)data->MyVal; break;
  78.             case MUIA_MyWindow_CustomAttr: aMyWindowCustomAttrGet( cl, obj, msg->opg_Storage ); break;
  79.     }
  80.  return DoSuperMethodA( cl, obj, (Msg)msg );
  81. }
  82.  
  83. static unsigned long SAVEDS ASM MyWindow_Dispatcher( REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg )
  84. {
  85.     switch( msg->MethodID ) {
  86.         case MUIM_MyWindow_WinMet: return mMyWindowWinMet( cl, obj, (Msg)msg );
  87.         case OM_SET: return mMyWindowOM_SET( cl, obj, (struct opSet*)msg );
  88.         case OM_GET: return mMyWindowOM_GET( cl, obj, (struct opGet*)msg );
  89.     }
  90.     return( DoSuperMethodA( cl, obj, msg ) );
  91. }
  92.  
  93. struct MUI_CustomClass *MyWindow_Create( void )
  94. {
  95.     return MUI_CreateCustomClass( NULL, MUIC_Window, NULL, sizeof( MyWindowData ), MyWindow_Dispatcher );
  96. }
  97.